package darecreek.exu.vfu
// package darecreek.ctrl.decode

import chisel3._
import chisel3.util._

object VInstructions {
  // Vector Load/Store instructions
  def VLE8_V             = BitPat("b???000?00000?????000?????0000111")
  def VLE16_V            = BitPat("b???000?00000?????101?????0000111")
  def VLE32_V            = BitPat("b???000?00000?????110?????0000111")
  def VLE64_V            = BitPat("b???000?00000?????111?????0000111")
  def VSE8_V             = BitPat("b???000?00000?????000?????0100111")
  def VSE16_V            = BitPat("b???000?00000?????101?????0100111")
  def VSE32_V            = BitPat("b???000?00000?????110?????0100111")
  def VSE64_V            = BitPat("b???000?00000?????111?????0100111")
  def VLM_V              = BitPat("b000000?01011?????000?????0000111")
  def VSM_V              = BitPat("b000000?01011?????000?????0100111")
  def VLSE8_V            = BitPat("b???010???????????000?????0000111")
  def VLSE16_V           = BitPat("b???010???????????101?????0000111")
  def VLSE32_V           = BitPat("b???010???????????110?????0000111")
  def VLSE64_V           = BitPat("b???010???????????111?????0000111")
  def VSSE8_V            = BitPat("b???010???????????000?????0100111")
  def VSSE16_V           = BitPat("b???010???????????101?????0100111")
  def VSSE32_V           = BitPat("b???010???????????110?????0100111")
  def VSSE64_V           = BitPat("b???010???????????111?????0100111")
  def VLUXEI8_V          = BitPat("b???001???????????000?????0000111")
  def VLUXEI16_V         = BitPat("b???001???????????101?????0000111")
  def VLUXEI32_V         = BitPat("b???001???????????110?????0000111")
  def VLUXEI64_V         = BitPat("b???001???????????111?????0000111")
  def VLOXEI8_V          = BitPat("b???011???????????000?????0000111")
  def VLOXEI16_V         = BitPat("b???011???????????101?????0000111")
  def VLOXEI32_V         = BitPat("b???011???????????110?????0000111")
  def VLOXEI64_V         = BitPat("b???011???????????111?????0000111")
  def VSUXEI8_V          = BitPat("b???001???????????000?????0100111")
  def VSUXEI16_V         = BitPat("b???001???????????101?????0100111")
  def VSUXEI32_V         = BitPat("b???001???????????110?????0100111")
  def VSUXEI64_V         = BitPat("b???001???????????111?????0100111")
  def VSOXEI8_V          = BitPat("b???011???????????000?????0100111")
  def VSOXEI16_V         = BitPat("b???011???????????101?????0100111")
  def VSOXEI32_V         = BitPat("b???011???????????110?????0100111")
  def VSOXEI64_V         = BitPat("b???011???????????111?????0100111")
  def VLE8FF_V           = BitPat("b???000?10000?????000?????0000111")
  def VLE16FF_V          = BitPat("b???000?10000?????101?????0000111")
  def VLE32FF_V          = BitPat("b???000?10000?????110?????0000111")
  def VLE64FF_V          = BitPat("b???000?10000?????111?????0000111")
  def VL1RE8_V           = BitPat("b000000101000?????000?????0000111")
  def VL1RE16_V          = BitPat("b000000101000?????101?????0000111")
  def VL1RE32_V          = BitPat("b000000101000?????110?????0000111")
  def VL1RE64_V          = BitPat("b000000101000?????111?????0000111")
  def VL2RE8_V           = BitPat("b001000101000?????000?????0000111")
  def VL2RE16_V          = BitPat("b001000101000?????101?????0000111")
  def VL2RE32_V          = BitPat("b001000101000?????110?????0000111")
  def VL2RE64_V          = BitPat("b001000101000?????111?????0000111")
  def VL4RE8_V           = BitPat("b011000101000?????000?????0000111")
  def VL4RE16_V          = BitPat("b011000101000?????101?????0000111")
  def VL4RE32_V          = BitPat("b011000101000?????110?????0000111")
  def VL4RE64_V          = BitPat("b011000101000?????111?????0000111")
  def VL8RE8_V           = BitPat("b111000101000?????000?????0000111")
  def VL8RE16_V          = BitPat("b111000101000?????101?????0000111")
  def VL8RE32_V          = BitPat("b111000101000?????110?????0000111")
  def VL8RE64_V          = BitPat("b111000101000?????111?????0000111")
  def VS1R_V             = BitPat("b000000101000?????000?????0100111")
  def VS2R_V             = BitPat("b001000101000?????000?????0100111")
  def VS4R_V             = BitPat("b011000101000?????000?????0100111")
  def VS8R_V             = BitPat("b111000101000?????000?????0100111")

  // Vector Integer Arithmetic Instructions
  def VADD_VV            = BitPat("b000000???????????000?????1010111")
  def VADD_VX            = BitPat("b000000???????????100?????1010111")
  def VADD_VI            = BitPat("b000000???????????011?????1010111")
  def VSUB_VV            = BitPat("b000010???????????000?????1010111")
  def VSUB_VX            = BitPat("b000010???????????100?????1010111")
  def VRSUB_VX           = BitPat("b000011???????????100?????1010111")
  def VRSUB_VI           = BitPat("b000011???????????011?????1010111")
  def VWADDU_VV          = BitPat("b110000???????????010?????1010111")
  def VWADDU_VX          = BitPat("b110000???????????110?????1010111")
  def VWSUBU_VV          = BitPat("b110010???????????010?????1010111")
  def VWSUBU_VX          = BitPat("b110010???????????110?????1010111")
  def VWADD_VV           = BitPat("b110001???????????010?????1010111")
  def VWADD_VX           = BitPat("b110001???????????110?????1010111")
  def VWSUB_VV           = BitPat("b110011???????????010?????1010111")
  def VWSUB_VX           = BitPat("b110011???????????110?????1010111")
  def VWADDU_WV          = BitPat("b110100???????????010?????1010111")
  def VWADDU_WX          = BitPat("b110100???????????110?????1010111")
  def VWSUBU_WV          = BitPat("b110110???????????010?????1010111")
  def VWSUBU_WX          = BitPat("b110110???????????110?????1010111")
  def VWADD_WV           = BitPat("b110101???????????010?????1010111")
  def VWADD_WX           = BitPat("b110101???????????110?????1010111")
  def VWSUB_WV           = BitPat("b110111???????????010?????1010111")
  def VWSUB_WX           = BitPat("b110111???????????110?????1010111")
  def VZEXT_VF2          = BitPat("b010010??????00110010?????1010111")
  def VSEXT_VF2          = BitPat("b010010??????00111010?????1010111")
  def VZEXT_VF4          = BitPat("b010010??????00100010?????1010111")
  def VSEXT_VF4          = BitPat("b010010??????00101010?????1010111")
  def VZEXT_VF8          = BitPat("b010010??????00010010?????1010111")
  def VSEXT_VF8          = BitPat("b010010??????00011010?????1010111")
  def VADC_VVM           = BitPat("b0100000??????????000?????1010111")
  def VADC_VXM           = BitPat("b0100000??????????100?????1010111")
  def VADC_VIM           = BitPat("b0100000??????????011?????1010111")
  def VMADC_VVM          = BitPat("b0100010??????????000?????1010111")
  def VMADC_VXM          = BitPat("b0100010??????????100?????1010111")
  def VMADC_VIM          = BitPat("b0100010??????????011?????1010111")
  def VMADC_VV           = BitPat("b0100011??????????000?????1010111")
  def VMADC_VX           = BitPat("b0100011??????????100?????1010111")
  def VMADC_VI           = BitPat("b0100011??????????011?????1010111")
  def VSBC_VVM           = BitPat("b0100100??????????000?????1010111")
  def VSBC_VXM           = BitPat("b0100100??????????100?????1010111")
  def VMSBC_VVM          = BitPat("b0100110??????????000?????1010111")
  def VMSBC_VXM          = BitPat("b0100110??????????100?????1010111")
  def VMSBC_VV           = BitPat("b0100111??????????000?????1010111")
  def VMSBC_VX           = BitPat("b0100111??????????100?????1010111")
  def VAND_VV            = BitPat("b001001???????????000?????1010111")
  def VAND_VX            = BitPat("b001001???????????100?????1010111")
  def VAND_VI            = BitPat("b001001???????????011?????1010111")
  def VOR_VV             = BitPat("b001010???????????000?????1010111")
  def VOR_VX             = BitPat("b001010???????????100?????1010111")
  def VOR_VI             = BitPat("b001010???????????011?????1010111")
  def VXOR_VV            = BitPat("b001011???????????000?????1010111")
  def VXOR_VX            = BitPat("b001011???????????100?????1010111")
  def VXOR_VI            = BitPat("b001011???????????011?????1010111")
  def VSLL_VV            = BitPat("b100101???????????000?????1010111")
  def VSLL_VX            = BitPat("b100101???????????100?????1010111")
  def VSLL_VI            = BitPat("b100101???????????011?????1010111")
  def VSRL_VV            = BitPat("b101000???????????000?????1010111")
  def VSRL_VX            = BitPat("b101000???????????100?????1010111")
  def VSRL_VI            = BitPat("b101000???????????011?????1010111")
  def VSRA_VV            = BitPat("b101001???????????000?????1010111")
  def VSRA_VX            = BitPat("b101001???????????100?????1010111")
  def VSRA_VI            = BitPat("b101001???????????011?????1010111")
  def VNSRL_WV           = BitPat("b101100???????????000?????1010111")
  def VNSRL_WX           = BitPat("b101100???????????100?????1010111")
  def VNSRL_WI           = BitPat("b101100???????????011?????1010111")
  def VNSRA_WV           = BitPat("b101101???????????000?????1010111")
  def VNSRA_WX           = BitPat("b101101???????????100?????1010111")
  def VNSRA_WI           = BitPat("b101101???????????011?????1010111")
  def VMSEQ_VV           = BitPat("b011000???????????000?????1010111")
  def VMSEQ_VX           = BitPat("b011000???????????100?????1010111")
  def VMSEQ_VI           = BitPat("b011000???????????011?????1010111")
  def VMSNE_VV           = BitPat("b011001???????????000?????1010111")
  def VMSNE_VX           = BitPat("b011001???????????100?????1010111")
  def VMSNE_VI           = BitPat("b011001???????????011?????1010111")
  def VMSLTU_VV          = BitPat("b011010???????????000?????1010111")
  def VMSLTU_VX          = BitPat("b011010???????????100?????1010111")
  def VMSLT_VV           = BitPat("b011011???????????000?????1010111")
  def VMSLT_VX           = BitPat("b011011???????????100?????1010111")
  def VMSLEU_VV          = BitPat("b011100???????????000?????1010111")
  def VMSLEU_VX          = BitPat("b011100???????????100?????1010111")
  def VMSLEU_VI          = BitPat("b011100???????????011?????1010111")
  def VMSLE_VV           = BitPat("b011101???????????000?????1010111")
  def VMSLE_VX           = BitPat("b011101???????????100?????1010111")
  def VMSLE_VI           = BitPat("b011101???????????011?????1010111")
  def VMSGTU_VX          = BitPat("b011110???????????100?????1010111")
  def VMSGTU_VI          = BitPat("b011110???????????011?????1010111")
  def VMSGT_VX           = BitPat("b011111???????????100?????1010111")
  def VMSGT_VI           = BitPat("b011111???????????011?????1010111")
  def VMINU_VV           = BitPat("b000100???????????000?????1010111")
  def VMINU_VX           = BitPat("b000100???????????100?????1010111")
  def VMIN_VV            = BitPat("b000101???????????000?????1010111")
  def VMIN_VX            = BitPat("b000101???????????100?????1010111")
  def VMAXU_VV           = BitPat("b000110???????????000?????1010111")
  def VMAXU_VX           = BitPat("b000110???????????100?????1010111")
  def VMAX_VV            = BitPat("b000111???????????000?????1010111")
  def VMAX_VX            = BitPat("b000111???????????100?????1010111")

  def VDIVU_VV           = BitPat("b100000???????????010?????1010111")
  def VDIVU_VX           = BitPat("b100000???????????110?????1010111")
  def VDIV_VV            = BitPat("b100001???????????010?????1010111")
  def VDIV_VX            = BitPat("b100001???????????110?????1010111")
  def VREMU_VV           = BitPat("b100010???????????010?????1010111")
  def VREMU_VX           = BitPat("b100010???????????110?????1010111")
  def VREM_VV            = BitPat("b100011???????????010?????1010111")
  def VREM_VX            = BitPat("b100011???????????110?????1010111")

  def VMUL_VV            = BitPat("b100101???????????010?????1010111")
  def VMUL_VX            = BitPat("b100101???????????110?????1010111")
  def VMULH_VV           = BitPat("b100111???????????010?????1010111")
  def VMULH_VX           = BitPat("b100111???????????110?????1010111")
  def VMULHU_VV          = BitPat("b100100???????????010?????1010111")
  def VMULHU_VX          = BitPat("b100100???????????110?????1010111")
  def VMULHSU_VV         = BitPat("b100110???????????010?????1010111")
  def VMULHSU_VX         = BitPat("b100110???????????110?????1010111")
  def VWMUL_VV           = BitPat("b111011???????????010?????1010111")
  def VWMUL_VX           = BitPat("b111011???????????110?????1010111")
  def VWMULU_VV          = BitPat("b111000???????????010?????1010111")
  def VWMULU_VX          = BitPat("b111000???????????110?????1010111")
  def VWMULSU_VV         = BitPat("b111010???????????010?????1010111")
  def VWMULSU_VX         = BitPat("b111010???????????110?????1010111")
  def VMACC_VV           = BitPat("b101101???????????010?????1010111")
  def VMACC_VX           = BitPat("b101101???????????110?????1010111")
  def VNMSAC_VV          = BitPat("b101111???????????010?????1010111")
  def VNMSAC_VX          = BitPat("b101111???????????110?????1010111")
  def VMADD_VV           = BitPat("b101001???????????010?????1010111")
  def VMADD_VX           = BitPat("b101001???????????110?????1010111")
  def VNMSUB_VV          = BitPat("b101011???????????010?????1010111")
  def VNMSUB_VX          = BitPat("b101011???????????110?????1010111")
  def VWMACCU_VV         = BitPat("b111100???????????010?????1010111")
  def VWMACCU_VX         = BitPat("b111100???????????110?????1010111")
  def VWMACC_VV          = BitPat("b111101???????????010?????1010111")
  def VWMACC_VX          = BitPat("b111101???????????110?????1010111")
  def VWMACCSU_VV        = BitPat("b111111???????????010?????1010111")
  def VWMACCSU_VX        = BitPat("b111111???????????110?????1010111")
  def VWMACCUS_VX        = BitPat("b111110???????????110?????1010111")
  def VMERGE_VVM         = BitPat("b0101110??????????000?????1010111")
  def VMERGE_VXM         = BitPat("b0101110??????????100?????1010111")
  def VMERGE_VIM         = BitPat("b0101110??????????011?????1010111")
  def VMV_V_V            = BitPat("b010111100000?????000?????1010111")
  def VMV_V_X            = BitPat("b010111100000?????100?????1010111")
  def VMV_V_I            = BitPat("b010111100000?????011?????1010111")

  // Vector Fixed-Point instructions
  def VSADDU_VV          = BitPat("b100000???????????000?????1010111")
  def VSADDU_VX          = BitPat("b100000???????????100?????1010111")
  def VSADDU_VI          = BitPat("b100000???????????011?????1010111")
  def VSADD_VV           = BitPat("b100001???????????000?????1010111")
  def VSADD_VX           = BitPat("b100001???????????100?????1010111")
  def VSADD_VI           = BitPat("b100001???????????011?????1010111")
  def VSSUBU_VV          = BitPat("b100010???????????000?????1010111")
  def VSSUBU_VX          = BitPat("b100010???????????100?????1010111")
  def VSSUB_VV           = BitPat("b100011???????????000?????1010111")
  def VSSUB_VX           = BitPat("b100011???????????100?????1010111")
  def VAADDU_VV          = BitPat("b001000???????????010?????1010111")
  def VAADDU_VX          = BitPat("b001000???????????110?????1010111")
  def VAADD_VV           = BitPat("b001001???????????010?????1010111")
  def VAADD_VX           = BitPat("b001001???????????110?????1010111")
  def VASUBU_VV          = BitPat("b001010???????????010?????1010111")
  def VASUBU_VX          = BitPat("b001010???????????110?????1010111")
  def VASUB_VV           = BitPat("b001011???????????010?????1010111")
  def VASUB_VX           = BitPat("b001011???????????110?????1010111")
  def VSMUL_VV           = BitPat("b100111???????????000?????1010111")
  def VSMUL_VX           = BitPat("b100111???????????100?????1010111")
  def VSSRL_VV           = BitPat("b101010???????????000?????1010111")
  def VSSRL_VX           = BitPat("b101010???????????100?????1010111")
  def VSSRL_VI           = BitPat("b101010???????????011?????1010111")
  def VSSRA_VV           = BitPat("b101011???????????000?????1010111")
  def VSSRA_VX           = BitPat("b101011???????????100?????1010111")
  def VSSRA_VI           = BitPat("b101011???????????011?????1010111")
  def VNCLIPU_WV         = BitPat("b101110???????????000?????1010111")
  def VNCLIPU_WX         = BitPat("b101110???????????100?????1010111")
  def VNCLIPU_WI         = BitPat("b101110???????????011?????1010111")
  def VNCLIP_WV          = BitPat("b101111???????????000?????1010111")
  def VNCLIP_WX          = BitPat("b101111???????????100?????1010111")
  def VNCLIP_WI          = BitPat("b101111???????????011?????1010111")

  // Vector Floating-point instructions
  def VFADD_VV           = BitPat("b000000???????????001?????1010111")
  def VFADD_VF           = BitPat("b000000???????????101?????1010111")
  def VFSUB_VV           = BitPat("b000010???????????001?????1010111")
  def VFSUB_VF           = BitPat("b000010???????????101?????1010111")
  def VFRSUB_VF          = BitPat("b100111???????????101?????1010111")
  def VFWADD_VV          = BitPat("b110000???????????001?????1010111")
  def VFWADD_VF          = BitPat("b110000???????????101?????1010111")
  def VFWSUB_VV          = BitPat("b110010???????????001?????1010111")
  def VFWSUB_VF          = BitPat("b110010???????????101?????1010111")
  def VFWADD_WV          = BitPat("b110100???????????001?????1010111")
  def VFWADD_WF          = BitPat("b110100???????????101?????1010111")
  def VFWSUB_WV          = BitPat("b110110???????????001?????1010111")
  def VFWSUB_WF          = BitPat("b110110???????????101?????1010111")
  def VFMUL_VV           = BitPat("b100100???????????001?????1010111")
  def VFMUL_VF           = BitPat("b100100???????????101?????1010111")
  def VFDIV_VV           = BitPat("b100000???????????001?????1010111")
  def VFDIV_VF           = BitPat("b100000???????????101?????1010111")
  def VFRDIV_VF          = BitPat("b100001???????????101?????1010111")
  def VFWMUL_VV          = BitPat("b111000???????????001?????1010111")
  def VFWMUL_VF          = BitPat("b111000???????????101?????1010111")
  def VFMACC_VV          = BitPat("b101100???????????001?????1010111")
  def VFMACC_VF          = BitPat("b101100???????????101?????1010111")
  def VFNMACC_VV         = BitPat("b101101???????????001?????1010111")
  def VFNMACC_VF         = BitPat("b101101???????????101?????1010111")
  def VFMSAC_VV          = BitPat("b101110???????????001?????1010111")
  def VFMSAC_VF          = BitPat("b101110???????????101?????1010111")
  def VFNMSAC_VV         = BitPat("b101111???????????001?????1010111")
  def VFNMSAC_VF         = BitPat("b101111???????????101?????1010111")
  def VFMADD_VV          = BitPat("b101000???????????001?????1010111")
  def VFMADD_VF          = BitPat("b101000???????????101?????1010111")
  def VFNMADD_VV         = BitPat("b101001???????????001?????1010111")
  def VFNMADD_VF         = BitPat("b101001???????????101?????1010111")
  def VFMSUB_VV          = BitPat("b101010???????????001?????1010111")
  def VFMSUB_VF          = BitPat("b101010???????????101?????1010111")
  def VFNMSUB_VV         = BitPat("b101011???????????001?????1010111")
  def VFNMSUB_VF         = BitPat("b101011???????????101?????1010111")
  def VFWMACC_VV         = BitPat("b111100???????????001?????1010111")
  def VFWMACC_VF         = BitPat("b111100???????????101?????1010111")
  def VFWNMACC_VV        = BitPat("b111101???????????001?????1010111")
  def VFWNMACC_VF        = BitPat("b111101???????????101?????1010111")
  def VFWMSAC_VV         = BitPat("b111110???????????001?????1010111")
  def VFWMSAC_VF         = BitPat("b111110???????????101?????1010111")
  def VFWNMSAC_VV        = BitPat("b111111???????????001?????1010111")
  def VFWNMSAC_VF        = BitPat("b111111???????????101?????1010111")
  def VFSQRT_V           = BitPat("b010011??????00000001?????1010111")
  def VFRSQRT7_V         = BitPat("b010011??????00100001?????1010111")
  def VFREC7_V           = BitPat("b010011??????00101001?????1010111")
  def VFMIN_VV           = BitPat("b000100???????????001?????1010111")
  def VFMIN_VF           = BitPat("b000100???????????101?????1010111")
  def VFMAX_VV           = BitPat("b000110???????????001?????1010111")
  def VFMAX_VF           = BitPat("b000110???????????101?????1010111")
  def VFSGNJ_VV          = BitPat("b001000???????????001?????1010111")
  def VFSGNJ_VF          = BitPat("b001000???????????101?????1010111")
  def VFSGNJN_VV         = BitPat("b001001???????????001?????1010111")
  def VFSGNJN_VF         = BitPat("b001001???????????101?????1010111")
  def VFSGNJX_VV         = BitPat("b001010???????????001?????1010111")
  def VFSGNJX_VF         = BitPat("b001010???????????101?????1010111")
  def VMFEQ_VV           = BitPat("b011000???????????001?????1010111")
  def VMFEQ_VF           = BitPat("b011000???????????101?????1010111")
  def VMFNE_VV           = BitPat("b011100???????????001?????1010111")
  def VMFNE_VF           = BitPat("b011100???????????101?????1010111")
  def VMFLT_VV           = BitPat("b011011???????????001?????1010111")
  def VMFLT_VF           = BitPat("b011011???????????101?????1010111")
  def VMFLE_VV           = BitPat("b011001???????????001?????1010111")
  def VMFLE_VF           = BitPat("b011001???????????101?????1010111")
  def VMFGT_VF           = BitPat("b011101???????????101?????1010111")
  def VMFGE_VF           = BitPat("b011111???????????101?????1010111")
  def VFCLASS_V          = BitPat("b010011??????10000001?????1010111")
  def VFMERGE_VFM        = BitPat("b0101110??????????101?????1010111")
  def VFMV_V_F           = BitPat("b010111100000?????101?????1010111")
  def VFCVT_XU_F_V       = BitPat("b010010??????00000001?????1010111")
  def VFCVT_X_F_V        = BitPat("b010010??????00001001?????1010111")
  def VFCVT_RTZ_XU_F_V   = BitPat("b010010??????00110001?????1010111")
  def VFCVT_RTZ_X_F_V    = BitPat("b010010??????00111001?????1010111")
  def VFCVT_F_XU_V       = BitPat("b010010??????00010001?????1010111")
  def VFCVT_F_X_V        = BitPat("b010010??????00011001?????1010111")
  def VFWCVT_XU_F_V      = BitPat("b010010??????01000001?????1010111")
  def VFWCVT_X_F_V       = BitPat("b010010??????01001001?????1010111")
  def VFWCVT_RTZ_XU_F_V  = BitPat("b010010??????01110001?????1010111")
  def VFWCVT_RTZ_X_F_V   = BitPat("b010010??????01111001?????1010111")
  def VFWCVT_F_XU_V      = BitPat("b010010??????01010001?????1010111")
  def VFWCVT_F_X_V       = BitPat("b010010??????01011001?????1010111")
  def VFWCVT_F_F_V       = BitPat("b010010??????01100001?????1010111")
  def VFNCVT_XU_F_W      = BitPat("b010010??????10000001?????1010111")
  def VFNCVT_X_F_W       = BitPat("b010010??????10001001?????1010111")
  def VFNCVT_RTZ_XU_F_W  = BitPat("b010010??????10110001?????1010111")
  def VFNCVT_RTZ_X_F_W   = BitPat("b010010??????10111001?????1010111")
  def VFNCVT_F_XU_W      = BitPat("b010010??????10010001?????1010111")
  def VFNCVT_F_X_W       = BitPat("b010010??????10011001?????1010111")
  def VFNCVT_F_F_W       = BitPat("b010010??????10100001?????1010111")
  def VFNCVT_ROD_F_F_W   = BitPat("b010010??????10101001?????1010111")

  // Vector reduction instructions
  def VREDSUM_VS         = BitPat("b000000???????????010?????1010111")
  def VREDMAX_VS         = BitPat("b000111???????????010?????1010111")
  def VREDMAXU_VS        = BitPat("b000110???????????010?????1010111")
  def VREDMIN_VS         = BitPat("b000101???????????010?????1010111")
  def VREDMINU_VS        = BitPat("b000100???????????010?????1010111")
  def VREDAND_VS         = BitPat("b000001???????????010?????1010111")
  def VREDOR_VS          = BitPat("b000010???????????010?????1010111")
  def VREDXOR_VS         = BitPat("b000011???????????010?????1010111")
  def VWREDSUMU_VS       = BitPat("b110000???????????000?????1010111")
  def VWREDSUM_VS        = BitPat("b110001???????????000?????1010111")
  def VFREDOSUM_VS       = BitPat("b000011???????????001?????1010111")
  def VFREDUSUM_VS       = BitPat("b000001???????????001?????1010111")
  def VFREDMIN_VS        = BitPat("b000101???????????001?????1010111")
  def VFREDMAX_VS        = BitPat("b000111???????????001?????1010111")
  def VFWREDUSUM_VS      = BitPat("b110001???????????001?????1010111")
  def VFWREDOSUM_VS      = BitPat("b110011???????????001?????1010111")

  // Vector mask instructions
  def VMAND_MM           = BitPat("b011001???????????010?????1010111")
  def VMNAND_MM          = BitPat("b011101???????????010?????1010111")
  def VMANDN_MM          = BitPat("b011000???????????010?????1010111")
  def VMXOR_MM           = BitPat("b011011???????????010?????1010111")
  def VMOR_MM            = BitPat("b011010???????????010?????1010111")
  def VMNOR_MM           = BitPat("b011110???????????010?????1010111")
  def VMORN_MM           = BitPat("b011100???????????010?????1010111")
  def VMXNOR_MM          = BitPat("b011111???????????010?????1010111")
  def VCPOP_M            = BitPat("b010000??????10000010?????1010111")
  def VFIRST_M           = BitPat("b010000??????10001010?????1010111")
  def VMSBF_M            = BitPat("b010100??????00001010?????1010111")
  def VMSIF_M            = BitPat("b010100??????00011010?????1010111")
  def VMSOF_M            = BitPat("b010100??????00010010?????1010111")
  def VIOTA_M            = BitPat("b010100??????10000010?????1010111")
  def VID_V              = BitPat("b010100?0000010001010?????1010111")

  // Vector permutation instructions
  def VMV_X_S            = BitPat("b0100001?????00000010?????1010111")
  def VMV_S_X            = BitPat("b010000100000?????110?????1010111")
  def VFMV_F_S           = BitPat("b0100001?????00000001?????1010111")
  def VFMV_S_F           = BitPat("b010000100000?????101?????1010111")
  def VSLIDEUP_VX        = BitPat("b001110???????????100?????1010111")
  def VSLIDEUP_VI        = BitPat("b001110???????????011?????1010111")
  def VSLIDEDOWN_VX      = BitPat("b001111???????????100?????1010111")
  def VSLIDEDOWN_VI      = BitPat("b001111???????????011?????1010111")
  def VSLIDE1UP_VX       = BitPat("b001110???????????110?????1010111")
  def VFSLIDE1UP_VF      = BitPat("b001110???????????101?????1010111")
  def VSLIDE1DOWN_VX     = BitPat("b001111???????????110?????1010111")
  def VFSLIDE1DOWN_VF    = BitPat("b001111???????????101?????1010111")
  def VRGATHER_VV        = BitPat("b001100???????????000?????1010111")
  def VRGATHEREI16_VV    = BitPat("b001110???????????000?????1010111")
  def VRGATHER_VX        = BitPat("b001100???????????100?????1010111")
  def VRGATHER_VI        = BitPat("b001100???????????011?????1010111")
  def VCOMPRESS_VM       = BitPat("b0101111??????????010?????1010111")
  def VMV1R_V            = BitPat("b1001111?????00000011?????1010111")
  def VMV2R_V            = BitPat("b1001111?????00001011?????1010111")
  def VMV4R_V            = BitPat("b1001111?????00011011?????1010111")
  def VMV8R_V            = BitPat("b1001111?????00111011?????1010111")
}